home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / mus / misc / NSM074.lha / nsm / nsm.doc < prev   
Text File  |  1999-02-19  |  11KB  |  308 lines

  1.  
  2.  
  3.             NSM - The alternative plug-in system for Octamed.
  4.  
  5.             Written by Kjetil S. Matheussen 1998-1999.
  6.             Current version: 0.74.
  7.  
  8.  
  9. INTRODUCTION:
  10.             Some months ago, I started to look at the arexx-
  11.             system of Octamed Soundstudio for the amiga. I soon
  12.             realised that it was extremely powerfull, and that I
  13.             would use it a lot in the future. But there was one
  14.             major drawback on it, and that was the speed. Even
  15.             if I had bought an 060, the responce-time would be
  16.             awful, so I started peeking and leeking around in the memory
  17.             trying to find out if I in some way could read and
  18.             write the data directly. And the result of that is
  19.             is this new plug-in system. It can not do everything
  20.             that the arexx-system does, but lucky enough, there
  21.             are some functions that let you send octarexx-messages
  22.             to the OCTAREXX-port, and then you can do everything!
  23.             There are around 70 assembler-functions and c-macros
  24.             you can use, so the use of octarexx-commands
  25.             should be very little.
  26.  
  27.             I have found out that the nsm plug-ins are about
  28.             200.000 (!!!!) times faster than the arexx-scripts
  29.             doing just the same. Plug-ins that only contains
  30.             sendrexx-commands (very rare, I suppose) (the
  31.             commands that sends an octarexx-command to the
  32.             OCTAMED_REXX-port) are about 30% faster than
  33.             an arexx-script doing just the same.
  34.  
  35.  
  36. USAGE
  37.             A better description lies in the nsm_short.usage-file,
  38.             but a more detailed usage-description comes here:
  39.  
  40.             1. Start the nsm-port. Put the following line into
  41.             your user-startup (or startup-sequence) file:
  42.             Run >NIL: (path)/nsm/nsmport/nsmport
  43.  
  44.             2. Patch Octamed Soundstudio 1.03c. 1.03c is the only
  45.             version that you can use the nsm plug-ins with.
  46.             The patch should be quite safe, but if you don't
  47.             trust me on that; make a copy before you patch!
  48.             run "nsm/patch/octapatch <octamed>"
  49.  
  50.             3. Make a directory in RAM:, and assign it as NSM:
  51.             After that, copy your plug-ins into that directory.
  52.             This increase the response-time on the plug-ins a lot.
  53.             You could allso make the plug-ins resident, but it
  54.             doesn't seems like the launch-system in octamed support
  55.             resident programs, or something.
  56.             Insert the following lines into your user-startup file
  57.             (or startup-sequence):
  58.             "
  59.             makedir ram:NSM
  60.             assign NSM: "ram:NSM"
  61.             copy dh2:nsm/plug-ins/#?/~(#?.#?|SCOPTIONS) nsm:
  62.             "
  63.             Reset your amiga.
  64.  
  65.             4. Start octamed (the one you patched). Go to the settings-
  66.             menu, and choose "Keyboard Shortcuts". Add your plug-ins
  67.             the same way as with your old arexx-scripts, except that
  68.             instead of choosing "Execute Arexx-file" in the Action-box,
  69.             choose "Launch Program" instead.
  70.  
  71.  
  72. PROBLEMS
  73.             1. When you try to patch, you get the following message:
  74.             "This is not the right version of Octamed Soundstudio 1.03c
  75.              Excpected 246696 bytes, found 443596."
  76.             This means that you try to patch the uncrunched version of
  77.             Octamed Soundstudio 1.03c. Earlier this version was submitted
  78.             on the homepage of octamed (http://www.octamed.co.uk), but
  79.             now they have changed the archive. It's still the same program,
  80.             but packed to save some bytes. Ok, now do two things. 1. Download
  81.             the packed version from the octamed homepage. 2. (optional, but
  82.             recommended) Mail me your unpacked version of Octamed 1.03c so I
  83.             can make a patch for that version too. I had that version before,
  84.             but I managed to destroy it.
  85.  
  86.             2. The patched version of octamed crashes!
  87.             Oops! that is not supposed to happen. Please mail me your configuration,
  88.             snoopdos-log, your octamed-file, when it crashes etc. (Note: I have
  89.             never discovered this happening, and don't excpect it to happen for
  90.             you either. But you never know...)
  91.  
  92.             3. None of the plug-ins are working. 
  93.             If you are shure that you have started the nsmport, and running
  94.             the patched version of octamed (you can check that by looking
  95.             at the size. If octamed is 246856 bytes long, it is patched. If it
  96.             is 246696 bytes long, its not patched.), send me your configuration
  97.             and I will answer you as fast as possible. And if you are a beginner
  98.             to the amiga, it would may be smarter to ask on a newsgroup instead.
  99.  
  100. BUGS
  101.             1. The isplaying-function doesn't allways work.
  102.  
  103. TODO
  104.             1. Make a shared library out of the assembler source-code.
  105.             2. Make an amigaguide-file from the "autodoc"-file.
  106.             3. Update the nsm-system to work with OSSV2 when that version
  107.                comes.
  108.             4. Write a better documentation.
  109.             5. Write an installer-script.
  110.             6. Write some more plug-ins. (thats for shure, I will do, for
  111.                certain)
  112.             7. Write the gettype-functions for instruments.
  113.  
  114.             Please feel free to do this things, if you want. And send it
  115.             to me, and I will (ofcourse) credit you. If there are other
  116.             things you think are missing, feel free to do it.
  117.  
  118.  
  119.  
  120. COMPATIBILITY
  121.             Ofcourse, This system will
  122.             only work with the ONE program, and that is
  123.             octamed soundstudio 1.03c (latest version of
  124.             octamed. I guess we won't see a new version of
  125.             octamed on a long time yet.). But, as long
  126.             as you distribute your sources with your
  127.             plug-ins, it will allways be possible to
  128.             use them in the future. Why? Because you
  129.             (or someone else) only have to recompile
  130.             when a new version of octamed comes out.
  131.             I will ofcourse update the archive when
  132.             new versions of octamed comes out. (Whenever
  133.             that happens, I bet we wont see a new version
  134.             of octamed on a very long time yet.)
  135.  
  136.             But ok. To recompile all the plug-ins for
  137.             each new release of octamed is a little bit stupid.
  138.             Therefore, what really has to be done, is to
  139.             make a shared library out of the assembler-
  140.             source. If anyone does this, the
  141.             compatibility with future versions should
  142.             be very safe. I am not very capable of doing
  143.             those library-stuff things, and as long as I
  144.             am the only one supporting this system right
  145.             now, I have no motivation for doing it. But
  146.             if people start sending me plug-ins, I will
  147.             absolutely consider making a shared library
  148.             for it. Should not be too hard...
  149.  
  150.             But; you may think that "updating for new
  151.             versions" is not necesarry that easy. And yes,
  152.             you are right. We now know very little about
  153.             how OSS V2 will look. But it should be safe
  154.             to presume that all the old REXX-commands
  155.             will still work on the new versions. And then,
  156.             if it seems to be extremely difficult to find
  157.             out how to make that and that command for
  158.             the new versions in the library-file, its just
  159.             replacing them with the rexx-commando
  160.             doing just the same until someone
  161.             finds out how to implement the
  162.             function directly. Allso, if this system gets
  163.             popular, I really hope that the
  164.             new developers of octamed will support
  165.             it in some way. (but, well, we will have to
  166.             see about that one. :)
  167.  
  168.  
  169. CHANGES
  170.             Changes from V0.73b:
  171.             1. Included the following functions:
  172.                - Setlinehiglight
  173.                - Unsetlinehighlight
  174.  
  175.             Changes from V0.73:
  176.             1. Updated the manual.
  177.  
  178.             Changes from V0.72:
  179.             1. Added the following functions:
  180.             getcurroctave(OCTABASE octabase)
  181.  
  182.             2. Fixed a bug in the following functions:
  183.             getfinetune
  184.             gethold
  185.             getdecay
  186.             getdefaultpitch
  187.             getextendedpreset
  188.             getmidichannel
  189.             getmidipreset
  190.             getcurrinstrument
  191.             getsuppressnoteonof
  192.             gettranspose
  193.             getvolume
  194.             getloopstart
  195.             getlooplength
  196.             getloopstate
  197.             getlooppingpong
  198.             getdisable
  199.  
  200.  
  201.             Changes from V0.71:
  202.             1. Added the following functions:
  203.             getnumblocks(OCTABASE octabase). This function did
  204.             actually exsist in the octacontrol.a-file allready,
  205.             but not in the header-file and in the autodoc-file.
  206.  
  207.             istrackon(OCTABASE octabase,WORD track). Does the
  208.             same as the octarexx-function.
  209.  
  210.             isplaying(OCTABASE octabase). Returns 1 if octamed
  211.             is playing, 0 if not. (beware that this doesn't
  212.             allways work, so if you want to be absolutely shure,
  213.             use the octarexx-isplaying function instead.)
  214.  
  215.             2. Fixed the getinname-function.
  216.  
  217.  
  218.             Changes from V0.70:
  219.             1. Added 22 new functions:
  220.  
  221.             getsamplebase
  222.             getcurrsamplebase
  223.             getsamplelength
  224.             getsample
  225.             setsample
  226.  
  227.             getfinetune
  228.             gethold
  229.             getdecay
  230.             getdefaultpitch
  231.             getextendedpreset
  232.             getmidichannel
  233.             getmidipreset
  234.             getcurrinstrument
  235.             getsuppressnoteonof
  236.             getinname
  237.             gettranspose
  238.             getvolume
  239.             getloopstart
  240.             getlooplength
  241.             getloopstate
  242.             getlooppingpong
  243.             getdisable
  244.  
  245.  
  246.             2. Removed the "memory-loss"-problem in the BUGS-section of
  247.             this manual. The "bug" was in the port-program, and I had allready
  248.             fixed it before I released V0.70.
  249.  
  250.  
  251. DEVELOPMENT
  252.             To make your own plug-ins, you should know a little c, and a tiny bit
  253.             arexx. Look at the example-plug ins included in this package, and
  254.             read the "autodoc"-file. (it's not really an autodoc-file, but
  255.             that doesn't matter, you can read it anyway.)
  256.             It's allso possible to use other languages than c (even arexx),
  257.             but I haven't customized anything for other languages. If you do,
  258.             please send it to me, so I can include it in the next release.
  259.             Allso; If you make a plug-in you think other people should know
  260.             about, send it to me, and I will put it on the nsm-homepage.
  261.             (remember to include the source). It's allso smart to put it
  262.             on the aminet, I suppose.
  263.  
  264.  
  265. DISCLAIMER
  266.             Well, do what you want. But don't rerelease this package
  267.             under your own name without crediting me for what I have done.
  268.             Allso, when making plug-ins, please include the source-file.
  269.             Thats a very good habit, and I don't see why you shouldn't.
  270.             Well, if you are making some sort of commersial plug-in
  271.             or something, I suppose I can't expect deny you not
  272.             releasing the source-code too. But if you make a commersial
  273.             program, using the nsm-system (or parts of the source-code), and
  274.             not incudes the source-code of the commercial program, I (or someone else)
  275.             will crack your program (if it has some kind of copy-protection),
  276.             and put the program (or a crack-patch) on the homepage of nsm.
  277.             (http://www.stud.ifi.uio.no/~kjetilma/nsm/).
  278.             (Yes, I am allowed to do that since I write that I will do that here.)
  279.             (well, its not very likely that anyone wants to make a commersial
  280.             plug-in, but... :) )
  281.  
  282.  
  283. COPYING
  284.             Yes, you can.
  285.  
  286.  
  287. FINAL NOTES
  288.             1. The plug-ins should be very safe if programmed correctly. (by
  289.             using the included assembler-functions, not by poking directly).
  290.             That means there should be a very small risk crashing octamed when using
  291.             the plug-ins, as long as the plug-ins itself doesn't crash the amiga
  292.             ofcourse.
  293.             2. And, (very important); Excuse my lousy english! I am a muscician,
  294.             not a professor in the english language. ;)
  295.  
  296.  
  297. CONTACT
  298.             Kjetil S. Matheussen
  299.             5423 Sogn Studentby
  300.             0858 Oslo
  301.             Norway
  302.  
  303.             e-mail: kjetilma@ifi.uio.no
  304.  
  305.             nsm-homepage: http://www.stud.ifi.uio.no/~kjetilma/nsm/
  306.             octamed-homepage: http://www.octamed.co.uk/
  307.  
  308.